查看原文
其他

AUTOSAR 通信栈分析(二)

快乐的肌肉 汽车MCU软件设计 2024-03-08

目录

1.PduR

1.1 PduR多播功能

1.2 PduR网关路由功能

1.3 PduR和IpduM

2.CAN 通信栈介绍 

2.1 ComM、CanSM、CanNM概述

2.2 PDU和HOH

2.3 CAN消息TX\RX模式 

3.小结 


书接上文AUTOSAR 通信栈分析(一)

我们了解了通信栈中服务层Com模块的基本功能,对PDU、SDU等做了解析,那么今天就来讲解通信栈的PduR,并以CAN通信栈为例,讲解一下CanNM、CanSM、CanTP是如何协同工作的。


01.PduR概述
PduR全称PDU Router,顾名思义,它在AUTOSAR中负责PDU的路由,向上承接应用模块如DCM\COM等,向下承接接口层如CanIf、LinIf并分发到不同的总线硬件驱动,如下图所示:

         对于PduR有多重用法,如下:

1.1 PduR多播功能

        如下图所示:

  • 单路由模式

        Com层通过PduR将PDU路由到CanIf或者路由到LinIf层

  • 多路由模式 

        Com层通过PduR将PDU路由到CanIfLinIf层

 1.2 PduR网关路由功能

所谓网关路由,即可以在一个接口层(If层)到另一个接口层(If层),也可以同时传到上层,如Com、DCM等,如下图:

例如,从LinIf接收到数据到PduR,PduR经过配置可以上传到Com,同时也可以路由到CanIf进行传输,实现网关功能。

1.3 PduR和IpduM

除了上述功能,在PduR这一层级还有一个IpduM(I-PDU Multiplexer) ,用于同一个PDU ID的复用,其基本原理如下:

此外,还可以多个PDU组合成一个容器PDU,然后这个容器PDU经由PduR传输出去,这样一帧传的数据就更多了,如下:



02.CAN通信栈介绍

上面讨论了这么多内容,我们还是来看看一个具体示例:以CAN为例,一个比较完整的通信栈包括如下模块:

        首先简单介绍下每个模块基本概念,后面具体讲细节 

  • ComM:管理所有通信channel的通信模式,与CanSM、CanNM相关

  • CanNM:处理网络管理相关问题

  • CanSM:处理CAN通信栈的状态管理问题

  • Com:CAN报文信号的拆解组包等

  • CanTP:诊断PDU的分段

  • CanIf:对MCU内部CAN的不同驱动进行抽象

  • Can:实际硬件CAN驱动访问

2.1 ComM、CanSM、CanNM概述

ComM主要是通信状态、网络管理的控制,具体控制框图如下:

具体来讲,主要有以下功能 :
  • 管理每个通信channel的通信模式

  • 协调来自通信请求者的总线通信请求

  • 提供API关闭某些特定信号的发送

  • 唤醒总线

  • 总线错误处理

所谓通信通道,是对 物理通信controller的抽象,每个通道都有自己的通信模式,如下面所示:
通信状态/Sub_State消息发送消息接收NM/总线通信唤醒能力

Full COM

Network requested

请求不可唤醒

Full COM

Ready Sleep

请求不可唤醒
Silent COM×请求

用户请求

网络响应

No COM××请求

用户请求

被动唤醒

        简化后的状态机如下:

最开始,状态为No_COM,当被动唤醒或者接收到Full com请求时(做NM报文首发的同学是不是很熟悉)进入到Full COM,在Full COM子状态里,首先进NetReq状态,如果请求一直在,那没问题,待在里面玩吧;如果没有请求了,进Ready Sleep;这里就需要结合CanNM进入到Silent COM或者NO_COM了。这里还是没有把ComM怎么和CanSM、CanNM联动了,举个例子,当有Full_COM请求

ComM -> CanSM :请求Full通信了

              CanSM -> CanIf:赶快把tranceiver的模式设置为normal

                             CanIf-> CanTrcv:好吧,我变成normal了

              CanSM -> CanIf:赶快把contorller设置为started

                             CanIf-> Can:好吧,我变成started了

              CanSM -> Com :给通道1准备开始Rx PDU Group接口

              CanSM -> Com :给通道1准备开始Tx PDU Group接口

              CanSM -> ComM :好了,CanSM小弟已经把活干完了

ComM -> NM:有个网络请求,从CanNM来的

              NM -> CanNM:快点跳到start模式哦

                        CanNM:OK

2.2 PDU和HOH

在AUTOSAR中,硬件被抽象成为HOH(Hardware object handles),通常来讲一个HOH表示CAN controller里的一个消息buffer。CanIF把不同PDU映射到不同的HOH上,如下:


如果当前HOH被占用了,在CanIf层通常也会有一个buffer用于缓存,如下:

2.3 CAN消息TX\RX模式 

在CAN的基础配置中,message的处理方式有两种:
  • 中断

        在OS中配置相应的ISE

  • 轮询

        调度器周期调度Can Mainfunction


除了上述功能,还有如下功能:
  • TxConfirmation

  • RxIndication

  • BusError Handle

  • WakeUp Hanlde 


03.小结本节内容主要是对CAN通信栈、PduR做了介绍,把ComM如何与CanSM、NM、CanNM协调做了一个概述,下一节将详细介绍NM的状态机。




往期回顾:

1.汽车标定合集

汽车标定文章合集
汽车标定技术--XCP协议如何支持测量功能
硬核:汽车标定--多周期测量显示异常汽车标定技术--MPC57xx是如何支持标定的页切换

2.AUTOSAR合集

AUTOSAR OS概述(一)
AUTOSAR OS概述(二)
AUTOSAR 通信栈分析(一)
AUTOSAR文章合集
Flash模拟EEPROM原理浅析

3.汽车网络安全合集

汽车网络安全方案产品交付形态的思考
汽车网络安全方案需求分析
车载信息安全场景概述
汽车网络安全渗透测试概述
汽车网络安全文章合集

4.汽车功能安全合集


5.汽车虚拟化合集

    汽车ECU虚拟化技术初探(一)


继续滑动看下一个

AUTOSAR 通信栈分析(二)

快乐的肌肉 汽车MCU软件设计
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存